#include<bits/stdc++.h>
using namespace std;
const int N=55;

int n,k;
int x[N],y[N];


int dfs(int l,int r,int t,int b,int c){
    if(c==1){
        return (r-l)*(t-b);
    }
    if(l==r||t==b) return 0;
    int res=INT_MAX;
    set<int> xs,ys;
    for(int i=1;i<=n;i++){
        if(x[i]>=l&&x[i]<=r&&y[i]>=b&&y[i]<=t){
            xs.insert(x[i]);
            ys.insert(y[i]);
        }
    }
    //x split
    int l1=*xs.begin(),r1=*(--xs.end());
    for(auto p=xs.begin();p!=xs.end();p++){
        auto q=++p;
        --p;
        if(q==xs.end()) break;
        for(int i=1;i<c;i++){
            res=min(res,dfs(l1,*p,t,b,i)+dfs(*q,r1,t,b,c-i));
        }
    }
    // y split
    int b1=*ys.begin(),t1=*(--ys.end());
    for(auto p=ys.begin();p!=ys.end();p++){
        auto q=++p;
        --p;
        if(q==ys.end()) break;
        for(int i=1;i<c;i++){
            res=min(res,dfs(l,r,*p,b1,i)+dfs(l,r,t1,*q,c-i));
        }
    }
    return res;
}

int main(){
    scanf("%d%d",&n,&k);
    int t0=0,l0=1000,b0=1000,r0=0;
    for(int i=1;i<=n;i++){
        scanf("%d%d",&x[i],&y[i]);
        t0=max(t0,y[i]);
        r0=max(r0,x[i]);
        b0=min(b0,y[i]);
        l0=min(l0,x[i]);
    }
    int ans=dfs(l0,r0,t0,b0,k);
    printf("%d",ans);
    return 0;
}